package top.jianx.storage.rule;

import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.toolkit.StringPool;
import top.jianx.storage.utils.FileUtils;

import java.util.UUID;
import java.util.concurrent.ThreadLocalRandom;

/**
 * 〈Oss通用规则〉
 *
 * @author Jianx
 * @create 2022/3/20
 * @since 1.0.0
 */
public class DefaultStorageRule implements StorageRule {

    /**
     * 获取存储桶规则
     *
     * @param bucketName 存储桶名称
     * @return String
     */
    public String bucketName(String bucketName) {
        return bucketName;
    }

    /**
     * 获取文件名规则
     *
     * @param originalFilename 原文件名
     * @param module           模块
     * @return String
     */
    public String fileName(String module, String originalFilename) {
        module = FileUtils.getFileModule(module);

        module = module.startsWith(StringPool.SLASH) ? module.substring(1) : module;
        module = module.endsWith(StringPool.SLASH) ? module.substring(0, module.length() - 1) : module;

        ThreadLocalRandom random = ThreadLocalRandom.current();
        String uuid = new UUID(random.nextLong(), random.nextLong()).toString().replace(StringPool.DASH, StringPool.EMPTY);
        return module + StringPool.SLASH + DateUtil.today() + StringPool.SLASH + uuid + StringPool.DOT + FileUtils.getFileExtension(originalFilename);
    }
}
